# 下载新浪首页图片
import requests, re, os

# 将下载资源的功能封装成函数  resp.text  resp.content
def download(url, fname):  # url:资源地址  fname:本地保存路径
    with open(fname, mode="wb") as fw:
        resp = requests.get(url)
        fw.write(resp.content)
# 从一个文件当中使用正则筛选出所有的图片url地址,保存列表中并返回
def get_url(fname, patt_str):
    pic_list = []  # 保存图片url地址的列表
    # fname: 文件路径  patt_str: 正则字符串
    patt_obj = re.compile(patt_str)  # patt_obj: 正则表达式对象
    # 1. 按行读取文件(readline, readlines)
    with open(fname, mode="r") as fr:
        for item in fr.readlines():  # item: 行数据
            # 2. 使用search对图片url地址进行匹配
            data = patt_obj.search(item)  # data: 匹配对象
            # 3. 匹配成功，将图片url地址添加到列表pic_list中
            if data != None:
                pic_list.append(data.group())
    return pic_list
if __name__ == '__main__':
    sina_path, images_dir = "/opt/sina.html", "/tmp/images"
    if os.path.exists(sina_path) == False:
        download("https://www.sina.com.cn/", sina_path)
    if os.path.exists(images_dir) == False:
        os.mkdir(images_dir)
    img_patt = "(https|http)://[\w\./-]+\.(jpg|jpeg|png|gif)"
    data = get_url(sina_path, img_patt)  # data: 图片url列表
    for url in data:
        download(url, f'{images_dir}/{url.split("/")[-1]}')
    # 1. 如果文件(/opt/sina.html)不存在   os.path.exists()
    #    将sina首页的源代码信息下载本地(/opt/sina.html)
    # 2. 调用get_url, 获取url列表
    # 3. 如果目录(/tmp/images)不存在, 创建目录
    #    遍历url列表, 将所有的图片下载到 /tmp/images/+原有图片名








